home *** CD-ROM | disk | FTP | other *** search
- package mx.controls.alertClasses
- {
- import flash.display.DisplayObject;
- import flash.events.KeyboardEvent;
- import flash.events.MouseEvent;
- import flash.text.TextLineMetrics;
- import flash.ui.Keyboard;
- import mx.controls.Alert;
- import mx.controls.Button;
- import mx.core.UIComponent;
- import mx.core.UITextField;
- import mx.core.mx_internal;
- import mx.events.CloseEvent;
- import mx.managers.IFocusManagerContainer;
- import mx.managers.ISystemManager;
- import mx.managers.PopUpManager;
-
- use namespace mx_internal;
-
- public class AlertForm extends UIComponent
- {
- mx_internal static const VERSION:String = "2.0.1.0";
-
- private var icon:DisplayObject;
-
- private var textWidth:Number;
-
- private var textHeight:Number;
-
- mx_internal var defaultButton:Button;
-
- private var defaultButtonChanged:Boolean = false;
-
- mx_internal var buttons:Array;
-
- mx_internal var textField:UITextField;
-
- public function AlertForm()
- {
- mx_internal::buttons = [];
- defaultButtonChanged = false;
- super();
- tabChildren = true;
- }
-
- override protected function keyDownHandler(param1:KeyboardEvent) : void
- {
- var _loc2_:uint = 0;
- _loc2_ = Alert(parent).buttonFlags;
- if(param1.keyCode == Keyboard.ESCAPE)
- {
- if(Boolean(_loc2_ & Alert.CANCEL) || !(_loc2_ & Alert.NO))
- {
- removeAlert("CANCEL");
- }
- else if(_loc2_ & Alert.NO)
- {
- removeAlert("NO");
- }
- }
- }
-
- private function clickHandler(param1:MouseEvent) : void
- {
- var _loc2_:String = null;
- _loc2_ = Button(param1.currentTarget).name;
- removeAlert(_loc2_);
- }
-
- override protected function measure() : void
- {
- var _loc1_:String = null;
- var _loc2_:TextLineMetrics = null;
- var _loc3_:int = 0;
- var _loc4_:Number = NaN;
- var _loc5_:Number = NaN;
- var _loc6_:Number = NaN;
- var _loc7_:Number = NaN;
- super.measure();
- _loc1_ = Alert(parent).title;
- _loc2_ = Alert(parent).mx_internal::getTitleTextField().getUITextFormat().measureText(_loc1_);
- _loc3_ = Math.max(mx_internal::buttons.length,2);
- _loc4_ = _loc3_ * mx_internal::buttons[0].width + (_loc3_ - 1) * 8;
- _loc5_ = Math.max(_loc4_,_loc2_.width);
- mx_internal::textField.width = 2 * _loc5_;
- textWidth = mx_internal::textField.textWidth + UITextField.mx_internal::TEXT_WIDTH_PADDING;
- _loc6_ = Math.max(_loc5_,textWidth);
- _loc6_ = Math.min(_loc6_,2 * _loc5_);
- if(textWidth < _loc6_ && mx_internal::textField.multiline == true)
- {
- mx_internal::textField.multiline = false;
- mx_internal::textField.wordWrap = false;
- }
- else if(mx_internal::textField.multiline == false)
- {
- mx_internal::textField.wordWrap = true;
- mx_internal::textField.multiline = true;
- }
- _loc6_ += 16;
- if(icon)
- {
- _loc6_ += icon.width + 8;
- }
- textHeight = mx_internal::textField.textHeight + UITextField.mx_internal::TEXT_HEIGHT_PADDING;
- _loc7_ = textHeight;
- if(icon)
- {
- _loc7_ = Math.max(_loc7_,icon.height);
- }
- _loc7_ = Math.min(_loc7_,screen.height * 0.75);
- _loc7_ = _loc7_ + (mx_internal::buttons[0].height + 3 * 8);
- measuredWidth = _loc6_;
- measuredHeight = _loc7_;
- }
-
- override protected function commitProperties() : void
- {
- var _loc1_:ISystemManager = null;
- super.commitProperties();
- if(defaultButtonChanged && Boolean(mx_internal::defaultButton))
- {
- defaultButtonChanged = false;
- Alert(parent).defaultButton = mx_internal::defaultButton;
- if(parent is IFocusManagerContainer)
- {
- _loc1_ = Alert(parent).systemManager;
- _loc1_.activate(IFocusManagerContainer(parent));
- }
- mx_internal::defaultButton.setFocus();
- }
- }
-
- override protected function createChildren() : void
- {
- var _loc1_:Class = null;
- var _loc2_:uint = 0;
- var _loc3_:uint = 0;
- var _loc4_:Button = null;
- super.createChildren();
- if(!mx_internal::textField)
- {
- mx_internal::textField = new UITextField();
- mx_internal::textField.styleName = this;
- mx_internal::textField.text = Alert(parent).text;
- mx_internal::textField.multiline = true;
- mx_internal::textField.wordWrap = true;
- mx_internal::textField.selectable = true;
- addChild(mx_internal::textField);
- }
- _loc1_ = Alert(parent).iconClass;
- if(Boolean(_loc1_) && !icon)
- {
- icon = new _loc1_();
- addChild(icon);
- }
- _loc2_ = Alert(parent).buttonFlags;
- _loc3_ = Alert(parent).defaultButtonFlag;
- if(_loc2_ & Alert.OK)
- {
- _loc4_ = createButton(Alert.okLabel,"OK");
- if(_loc3_ == Alert.OK)
- {
- mx_internal::defaultButton = _loc4_;
- }
- }
- if(_loc2_ & Alert.YES)
- {
- _loc4_ = createButton(Alert.yesLabel,"YES");
- if(_loc3_ == Alert.YES)
- {
- mx_internal::defaultButton = _loc4_;
- }
- }
- if(_loc2_ & Alert.NO)
- {
- _loc4_ = createButton(Alert.noLabel,"NO");
- if(_loc3_ == Alert.NO)
- {
- mx_internal::defaultButton = _loc4_;
- }
- }
- if(_loc2_ & Alert.CANCEL)
- {
- _loc4_ = createButton(Alert.cancelLabel,"CANCEL");
- if(_loc3_ == Alert.CANCEL)
- {
- mx_internal::defaultButton = _loc4_;
- }
- }
- if(mx_internal::defaultButton)
- {
- defaultButtonChanged = true;
- invalidateProperties();
- }
- }
-
- private function removeAlert(param1:String) : void
- {
- var _loc2_:Alert = null;
- var _loc3_:CloseEvent = null;
- _loc2_ = Alert(parent);
- _loc2_.visible = false;
- _loc3_ = new CloseEvent(CloseEvent.CLOSE);
- if(param1 == "YES")
- {
- _loc3_.detail = Alert.YES;
- }
- else if(param1 == "NO")
- {
- _loc3_.detail = Alert.NO;
- }
- else if(param1 == "OK")
- {
- _loc3_.detail = Alert.OK;
- }
- else if(param1 == "CANCEL")
- {
- _loc3_.detail = Alert.CANCEL;
- }
- _loc2_.dispatchEvent(_loc3_);
- PopUpManager.removePopUp(_loc2_);
- }
-
- private function createButton(param1:String, param2:String) : Button
- {
- var _loc3_:Button = null;
- var _loc4_:String = null;
- _loc3_ = new Button();
- _loc3_.label = param1;
- _loc3_.name = param2;
- _loc4_ = getStyle("buttonStyleName");
- if(_loc4_)
- {
- _loc3_.styleName = _loc4_;
- }
- _loc3_.addEventListener(MouseEvent.CLICK,clickHandler);
- _loc3_.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
- _loc3_.owner = parent;
- addChild(_loc3_);
- _loc3_.setActualSize(Alert.buttonWidth,Alert.buttonHeight);
- mx_internal::buttons.push(_loc3_);
- return _loc3_;
- }
-
- override public function styleChanged(param1:String) : void
- {
- var _loc2_:String = null;
- var _loc3_:int = 0;
- var _loc4_:int = 0;
- super.styleChanged(param1);
- if(!param1 || param1 == "styleName" || param1 == "buttonStyleName")
- {
- if(mx_internal::buttons)
- {
- _loc2_ = getStyle("buttonStyleName");
- _loc3_ = int(mx_internal::buttons.length);
- _loc4_ = 0;
- while(_loc4_ < _loc3_)
- {
- mx_internal::buttons[_loc4_].styleName = _loc2_;
- _loc4_++;
- }
- }
- }
- }
-
- override protected function updateDisplayList(param1:Number, param2:Number) : void
- {
- var _loc3_:Number = NaN;
- var _loc4_:Number = NaN;
- var _loc5_:Number = NaN;
- var _loc6_:int = 0;
- var _loc7_:Number = NaN;
- super.updateDisplayList(param1,param2);
- _loc4_ = param2 - mx_internal::buttons[0].height;
- _loc5_ = mx_internal::buttons.length * (mx_internal::buttons[0].width + 8) - 8;
- _loc3_ = (param1 - _loc5_) / 2;
- _loc6_ = 0;
- while(_loc6_ < mx_internal::buttons.length)
- {
- mx_internal::buttons[_loc6_].move(_loc3_,_loc4_);
- mx_internal::buttons[_loc6_].tabIndex = _loc6_ + 1;
- _loc3_ += mx_internal::buttons[_loc6_].width + 8;
- _loc6_++;
- }
- _loc5_ = textWidth;
- if(icon)
- {
- _loc5_ += icon.width + 8;
- }
- _loc3_ = (param1 - _loc5_) / 2;
- if(icon)
- {
- icon.x = _loc3_;
- icon.y = (_loc4_ - icon.height) / 2;
- _loc3_ += icon.width + 8;
- }
- _loc7_ = mx_internal::textField.getExplicitOrMeasuredHeight();
- mx_internal::textField.move(_loc3_,(_loc4_ - _loc7_) / 2);
- mx_internal::textField.setActualSize(textWidth + 5,_loc7_);
- }
- }
- }
-
-